home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include "dialog.h"
-
- class FIELD_INTEGER: public FIELD_STRING_BASE{
- int &val;
- int backup;
- /*~PROTOBEG~ FIELD_INTEGER */
- public:
- FIELD_INTEGER (const char *_prompt, int &_val);
- protected:
- void dokey (WINDOW *w,
- int key,
- FIELD_MSG&msg);
- public:
- void html_draw (int nof);
- void restore (void);
- void save (void);
- /*~PROTOEND~ FIELD_INTEGER */
- };
-
- PUBLIC FIELD_INTEGER::FIELD_INTEGER(
- const char *_prompt,
- int &_val)
- : FIELD_STRING_BASE (_prompt, 10),val(_val)
- {
- backup = _val;
- sprintf (buf,"%d",backup);
- }
-
- PROTECTED void FIELD_INTEGER::dokey(WINDOW *w, int key, FIELD_MSG &msg)
- {
- if (isdigit(key)
- || (key >= KEY_MIN && key <= KEY_MAX)
- || key < ' '
- || (x.input + x.scroll == 0 && key == '-')){
- FIELD_STRING_BASE::dokey(w,key,msg);
- }
- }
-
- /*
- Draw the field with the prompt
- */
- PUBLIC void FIELD_INTEGER::html_draw(int nof)
- {
- char key[100];
- format_htmlkey (key,nof);
- html_printf ("<tr><td>%s<td>",prompt);
- html_defvar ("integer",key,buf,"size=10 maxlength=20");
- html_defvarcur (key,buf);
- }
-
-
-
- PUBLIC void FIELD_INTEGER::save()
- {
- val = atoi(buf);
- }
-
- PUBLIC void FIELD_INTEGER::restore()
- {
- val = backup;
- }
-
-
-
- /*
- Add a numerical field to the dialog.
- */
- PUBLIC FIELD *DIALOG::newf_num(
- const char *prompt,
- int &val)
- {
- FIELD_INTEGER *s = new FIELD_INTEGER(prompt,val);
- add (s);
- return s;
- }
-
-